package br.gov.pe.seres.siap.view.managedBean.popUp.#NOMEBEANATTR#;

import javax.annotation.PostConstruct;
import javax.inject.Named;
import org.primefaces.context.RequestContext;
import org.primefaces.event.FileUploadEvent;
import br.com.banksystem.bsdemoiselle.jsf.JsfUtil;
import br.gov.frameworkdemoiselle.annotation.ViewScoped;
import br.gov.frameworkdemoiselle.stereotype.ViewController;
import br.gov.frameworkdemoiselle.util.Beans;
import br.gov.pe.seres.siap.bean.Arquivo;
import br.gov.pe.seres.siap.bean.#NOMEBEAN#;
import br.gov.pe.seres.siap.bean.TipoDocumentoEnum;
import br.gov.pe.seres.siap.infra.ConstantsConfig;
import br.gov.pe.seres.siap.view.managedBean.popUp.DocumentoPopupMB;
import br.gov.pe.seres.siap.view.managedBean.popUp.SiapPopup;
import br.gov.pe.seres.siap.view.managedBean.popUp.info.IConfirmacaoExclusao;

@ViewController
@ViewScoped
@Named("#NOMEMB#")
public class #NOMECLASSEMB# extends SiapPopup<#NOMEBEAN#, I#NOMEBEAN#Popup> implements IConfirmacaoExclusao {

	
	@Override
	public void adicionar() {
		if (getAcao().equals(JsfUtil.ACAO_INSERIR)) {
			getFachada().permitirAdicao#NOMEBEAN#PeloPopUp(getManagedBean().listaDocumentosPopup(), getPojo());
			getManagedBean().listaDocumentosPopup().add(getPojo());
		} else if (getAcao().equals(JsfUtil.ACAO_ALTERAR)) {
			getFachada().permitirAlteracao#NOMEBEAN#PeloPopUp(getManagedBean().listaDocumentosPopup(), getPojo(), getPojoDeletar());
			getManagedBean().listaDocumentosPopup().add(getPojo());
			getManagedBean().listaDocumentosPopup().remove(getPojoDeletar());
		}
		RequestContext.getCurrentInstance().execute("fecharPopupDocumento()");
		java.util.Collections.sort(getManagedBean().listaDocumentosPopup(), new #NOMEBEAN#());
	}

	
	@Override
	public void alterar(#NOMEBEAN# #NOMEBEANATTR#) {
		setAcao(JsfUtil.ACAO_ALTERAR);
		Beans.getReference(DocumentoPopupMB.class).setTipoDocumento(TipoDocumentoEnum.#ENUM_VAL#);
		setPojo(getFachada().clonar#NOMEBEAN#(#NOMEBEANATTR#));
		setPojoDeletar(#NOMEBEANATTR#);
	}

	@Override
	public String confirmacaoExclusaoPopup(Object objeto) {
		excluirLista((Arquivo) objeto);
		return "";
	}

	public void excluirLista(Arquivo entidade) {
		getPojo().getArquivos().remove(entidade);
	}

	public boolean getExibirFileUpload() {
		if ((getPojo().getArquivos() == null) || (getPojo().getArquivos().size() < getQuantidadeArquivosDocumento())) { return true; }
		return false;
	}

	public Long getQuantidadeArquivosDocumento() {
		return Beans.getReference(ConstantsConfig.class).getQuantidadeArquivosDocumento();
	}

	public void handleFileUpload(FileUploadEvent event) {
		Arquivo arquivo = new Arquivo();
		arquivo.setArquivo(event.getFile());
		arquivo.setNomeArquivo(event.getFile().getFileName());
		getFachada().adicionarArquivoAo#NOMEBEAN#(getPojo(), arquivo);
	}

	@Override
	public void inicializarPopup(I#NOMEBEAN#Popup mb) {
		setManagedBean(mb);
	}

	@PostConstruct
	private void initBean() {
		setAcao(JsfUtil.ACAO_INSERIR);
		setPojo(new #NOMEBEAN#());
	}

	
	@Override
	public void novo() {
		setAcao(JsfUtil.ACAO_INSERIR);
		setPojo(new #NOMEBEAN#());
		setPojoDeletar(new #NOMEBEAN#());

	}

	@Override
	public void visualizar(#NOMEBEAN# entidade) {
		setAcao(JsfUtil.ACAO_VISUALIZAR);
		Beans.getReference(DocumentoPopupMB.class).setTipoDocumento(TipoDocumentoEnum.#ENUM_VAL#);
		setPojo(entidade);
	}

}
